Sound Foundations for Effective Proofs of Programs
نویسنده
چکیده
When considering the correctness of programs, the only absolute demonstration of quality is mathematical proof. Yet the complexity of these proofs makes them all but impossible both to construct and read, and the correctness of the proofs themselves come into question. We take an approach to the creation of these proofs based on specifying an axiomatic semantics for the programming language, and using that semantics to automatically create a Verification Condition Generator, a program that takes a general program written in the language and creates the proof of that program, modulo a set of verification conditions, to be proven by hand. This automates much of the detailed work of creating the proof. Yet even this VCG technique depends on the soundness of the axiomatic semantics, and in fact, many proposed axiomatic semantics have suffered from unsoundness. We take the difficult but secure approach of foundationally defining an operational semantics of the programming language, including concurrency, and then proving the axioms and rules of inference of the axiomatic semantics from the operational semantics as theorems. Once this is done, the correctness of the VCG function itself can be proven, so the proofs of concurrent programs as constructed by the VCG in a way that is known to be sound, modulo the truth of the verification conditions, which capture the features of the program proof that depend on the logic of the underlying data types.
منابع مشابه
Automating Verification of Functional Programs with Quantified Invariants
We present the foundations of a verifier for higher-order functional programs with generics and recursive algebraic data types. Our verifier supports finding sound proofs and counterexamples even in the presence of certain quantified invariants and recursive functions. Our approach uses the same language to describe programs and invariants and uses semantic criteria for establishing termination...
متن کاملModal Proofs As Distributed Programs
We develop a new foundation for distributed programming languages by defining an intuitionistic, modal logic and then interpreting the modal proofs as distributed programs. More specifically, the proof terms for the various modalities have computational interpretations as remote procedure calls, commands to broadcast computations to all nodes in the network, commands to use portable code, and f...
متن کاملThe Fastest and Shortest Algorithm for all Well-Defined Problems
An algorithm M is described that solves any well-defined problem p as quickly as the fastest algorithm computing a solution to p, save for a factor of 5 and loworder additive terms. M optimally distributes resources between the execution of provably correct p-solving programs and an enumeration of all proofs, including relevant proofs of program correctness and of time bounds on program runtime...
متن کاملGödel Logics: Foundations and Applications to Computer Science
Gödel logics are a family of many-valued logics which have recently received significant attention in Computer Science. They are one of the families of logics which have been used as a basis of fuzzy logic; they have been used to give characterizations of the stable model semantics in logic programming; and they have been put forward as candidates for a logical analysis of parallel computation....
متن کاملCertificates and Separation Logic
Modular and local reasoning about object-oriented programs has been widely studied for programing languages such as C# and Java. Once source programs have been proven, the next verification challenge is to ensure that the code produced by the compiler is correct. Since verifying a compiler can be extremely complex, this paper uses proof-transforming compilation, an alternative approach which au...
متن کامل